// instrument.h
#ifndef INSTRUMENT_H
#define INSTRUMENT_H

#include <jni.h>
// 乐器接口
class Instrument {
public:
    virtual ~Instrument() = default;

    // 音频生成接口
    virtual double genWave(short* buffer, int numSamples,
                           double phase, double sampleRate) = 0;

    // 事件处理接口
    //virtual void onEvent(const char* eventName, jobject value, JNIEnv* env) = 0;
    virtual void onEvent(const char* eventName,int value) = 0;
    virtual void onEvent(const char* eventName,double value)= 0;
    // 生命周期管理
    virtual void activate() {}
    virtual void deactivate() {}
};

// 插件入口函数类型
typedef Instrument* (*CreateInstrumentFunc)();
typedef void (*DestroyInstrumentFunc)(Instrument*);

#endif